<?php


namespace App\Utils;

class AliyunOssHelper
{
    /**
     * 根据图片高度等比例压缩图片大小
     * @param $imgUrl string 阿里云oss存储图片地址
     * @param $hSize int 压缩后高度
     * @return string
     */
    public static function compressImageHandle(string $imgUrl, int $hSize): string
    {
        if (empty($imgUrl) || empty(trim($imgUrl))) {
            return $imgUrl;
        }

        if (str_contains($imgUrl, 'x-oss-process')) {
            // 已处理压缩，先删除压缩参数
            $imgUrl = self::delCompressImageParam($imgUrl);
        }

        if (!str_contains($imgUrl, '?')) {
            $imgUrl = $imgUrl . "?";
        } else {
            if ($imgUrl[strlen($imgUrl) - 1] != '&') {
                $imgUrl .= '&';
            }
        }
        $imgUrl .= "x-oss-process=image/resize,h_{$hSize},m_lfit";
        return $imgUrl;
    }

    /**
     * 删除阿里云oss图片地址中的压缩参数
     * @param $imgUrl string 带压缩参数的图片地址
     * @return string
     */
    public static function delCompressImageParam(string $imgUrl)
    {
        if (empty(trim($imgUrl))) {
            return $imgUrl;
        }

        return removeQueryParamVar($imgUrl, 'x-oss-process');
    }


}